package com.ruoyi.storage.mapper;

import java.util.List;

import com.ruoyi.order.domain.SalesDetail;
import com.ruoyi.storage.domain.ExitRecord;
import com.ruoyi.storage.domain.ExitDetail;
import org.apache.ibatis.annotations.Param;

/**
 * 出库Mapper接口
 * 
 * @author 庞一恺
 * @date 2025-01-23
 */
public interface ExitRecordMapper 
{




    /**
     * 查询出库
     * 
     * @param outId 出库主键
     * @return 出库
     */
    public ExitRecord selectExitRecordByOutId(Integer outId);

    /**
     * 查询出库列表
     * 
     * @param exitRecord 出库
     * @return 出库集合
     */
    public List<ExitRecord> selectExitRecordList(ExitRecord exitRecord);

    /**
     * 新增出库
     * 
     * @param exitRecord 出库
     * @return 结果
     */
    public int insertExitRecord(ExitRecord exitRecord);

    /**
     * 修改出库
     * 
     * @param exitRecord 出库
     * @return 结果
     */
    public int updateExitRecord(ExitRecord exitRecord);

    /**
     * 删除出库
     * 
     * @param outId 出库主键
     * @return 结果
     */
    public int deleteExitRecordByOutId(Integer outId);

    /**
     * 批量删除出库
     * 
     * @param outIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteExitRecordByOutIds(Integer[] outIds);

    /**
     * 批量删除出库详情
     * 
     * @param outIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteExitDetailByExitRecordIds(Integer[] outIds);
    
    /**
     * 批量新增出库详情
     * 
     * @param exitDetailList 出库详情列表
     * @return 结果
     */
    public int batchExitDetail(List<ExitDetail> exitDetailList);
    

    /**
     * 通过出库主键删除出库详情信息
     * 
     * @param outId 出库ID
     * @return 结果
     */
    public int deleteExitDetailByExitRecordId(Integer outId);


    /**
     * 通过订单详情获取同一批订单详情（同一个订单的下同一个仓库部分）
     *
     * @param orderId 订单ID
     * @param warehouseId 仓库ID
     * @return 结果
     */
    public List<SalesDetail> getSalesDetailListInExit(@Param("orderId") String orderId,@Param("warehouseId") Integer warehouseId);


    List<SalesDetail> selectSalesDetailListByOrderId(String orderId);
}
